package com.superpai.request.item;

import java.util.TreeMap;

import com.superpai.request.PaiPaiRequest;
import com.superpai.response.item.SellerSearchItemListResponse;
import com.superpai.utils.ParameterUtils;

/**
 * @author Devin.Hu
 * @date 2011-8-22
 * @version V1.0
 * @description 卖家查询商品列表请求参数类
 */
public class SellerSearchItemListRequest implements PaiPaiRequest<SellerSearchItemListResponse> {

	/** number	>=1	查询第几页 **/
	private int pageIndex;	
	/** number	[1,40]	每页显示的记录数 **/
	private int pageSize;
	/** number	[10001,2000000000]	卖家QQ号 **/
	private int sellerUin;	
	/** string	 例如如果设置为“森林”，那么商品标题中带有“森林”词的商品列表就会被查找出来. 需要过滤特殊字符，包含在中括号内的: 【< > \】 **/
	private String itemName;
	/**string**/
	private String itemTags;	
	/**string 店铺自定义分类，“0” 查询未分类商品**/
	private String categoryId;
	/**number 目标商品的状态值， 不传值则是获得所有的商品
	1.出售中，
	2.仓库中，组合状态包括：我下架的+定期下架的+定时上架+从未上架的
	3.我下架的
	4.定期下架的
	5.等待上架
	6.定时上架
	7.从未上架
	8.售完的
	9.等待处理
	10.删除的商品**/
	private int itemState;
	/**string 目标商品的第一次发布时间条件区间里的左边界值 例如如果设置为2008-12-03 01:02:03，表示查找商品第一次发布时间大于2008年12月3日 01:02:03 这个时刻的商品。 备注：商品一旦发布，该时间不再更改**/
	private String createTimeBegin;	
	/**string 目标商品的第一次发布时间条件区间里的右边界值 例如如果设置为2008-12-03 01:02:03，表示查找商品第一次发布时间小于2008年12月3日 01:02:03 这个时刻的商品**/
	private String createTimeEnd;
	/**string 目标商品的最后变更时间条件区间里的左边界值 例如如果设置为2008-12-03 01:02:03，表示查找商品信息最后变更时间大于2008年12月3日 01:02:03 这个时刻的商品**/
	private String modifyTimeBegin;
	/**string  目标商品的最后变更时间条件区间里的右边界值 例如如果设置为2008-12-03 01:02:03， 表示查找商品信息最后变更时间小于2008年12月3日 01:02:03 这个时刻的商品 备注：只要是对商品进行了之如上架，下架，修改之类的操作，该时间就会变更**/
	private String modifyTimeEnd;
	/**string  目标商品的上架时间条件区间里的 左边界值 例如如果设置为2008-12-03 01:02:03，表示查找商品上架时间大于2008年12月3日 01:02:03 这个时刻的商品**/
	private String toSaleTimeBegin;
	/**string  目标商品的上架时间条件区间里的右边界值 例如如果设置为2008-12-03 01:02:03，表示查找商品上架时间小于2008年12月3日 01:02:03 这个时刻的商品 备注：商品上架则该时间改变，如果商品一直没有上架过，则默认的时间是1970-01-01 08:00:00**/
	private String toSaleTimeEnd;
	/**number 目标商品价格大于等于 单位：分**/
	private int priceMorethan;	
	/**number 目标商品价格小于等于 单位：分**/
	private int priceLessthan;	
	/**number 是否需要返回商品的附属信息，0为不需要，1为需要。 强烈建议该字段不要时设置为0， 因为这样能大大加快调用的返回速度。
	备注：
	1.女装商品的下载的时候需要用这个,5张图片必须设置这个为1才能下载到其他4张图片
	2.需要返回尺码表sizeTable时，也必须出现该字段
	3.需要返回会员vip折扣价或是否会员vip商品时，也必须出现该字段**/
	private int extendInfo;
	/**number 目标商品列表的排序方式：
	0, 商品ID升序排列
	1, 商品ID降序排列
	2, 发布时间升序排列
	3, 发布时间降序排列
	4, 下架时间升序排列
	5, 下架时间降序排列
	6, 上架时间升序排列
	7, 上架时间降序排列
	8, 价格升序排列
	9, 价格降序排列
	10, 商品出价次数升序排列
	11, 商品出价次数降序排列
	12, 商品剩余时间升序排列
	13, 商品剩余时间降序排列
	14, 商品定时上架时间升序排列
	15, 商品定时上架时间降序排列
	16, 商品剩余件数升序排列
	17, 商品剩余件数降序排列**/
	private int orderType;
	
	public int getPageIndex() {
		return pageIndex;
	}

	public void setPageIndex(int pageIndex) {
		this.pageIndex = pageIndex;
	}

	public int getPageSize() {
		return pageSize;
	}

	public void setPageSize(int pageSize) {
		this.pageSize = pageSize;
	}

	public int getSellerUin() {
		return sellerUin;
	}

	public void setSellerUin(int sellerUin) {
		this.sellerUin = sellerUin;
	}

	public String getItemName() {
		return itemName;
	}

	public void setItemName(String itemName) {
		this.itemName = itemName;
	}

	public String getItemTags() {
		return itemTags;
	}

	public void setItemTags(String itemTags) {
		this.itemTags = itemTags;
	}

	public String getCategoryId() {
		return categoryId;
	}

	public void setCategoryId(String categoryId) {
		this.categoryId = categoryId;
	}

	public int getItemState() {
		return itemState;
	}

	public void setItemState(int itemState) {
		this.itemState = itemState;
	}

	public String getCreateTimeBegin() {
		return createTimeBegin;
	}

	public void setCreateTimeBegin(String createTimeBegin) {
		this.createTimeBegin = createTimeBegin;
	}

	public String getCreateTimeEnd() {
		return createTimeEnd;
	}

	public void setCreateTimeEnd(String createTimeEnd) {
		this.createTimeEnd = createTimeEnd;
	}

	public String getModifyTimeBegin() {
		return modifyTimeBegin;
	}

	public void setModifyTimeBegin(String modifyTimeBegin) {
		this.modifyTimeBegin = modifyTimeBegin;
	}

	public String getModifyTimeEnd() {
		return modifyTimeEnd;
	}

	public void setModifyTimeEnd(String modifyTimeEnd) {
		this.modifyTimeEnd = modifyTimeEnd;
	}

	public String getToSaleTimeBegin() {
		return toSaleTimeBegin;
	}

	public void setToSaleTimeBegin(String toSaleTimeBegin) {
		this.toSaleTimeBegin = toSaleTimeBegin;
	}

	public String getToSaleTimeEnd() {
		return toSaleTimeEnd;
	}

	public void setToSaleTimeEnd(String toSaleTimeEnd) {
		this.toSaleTimeEnd = toSaleTimeEnd;
	}

	public int getPriceMorethan() {
		return priceMorethan;
	}

	public void setPriceMorethan(int priceMorethan) {
		this.priceMorethan = priceMorethan;
	}

	public int getPriceLessthan() {
		return priceLessthan;
	}

	public void setPriceLessthan(int priceLessthan) {
		this.priceLessthan = priceLessthan;
	}

	public int getExtendInfo() {
		return extendInfo;
	}

	public void setExtendInfo(int extendInfo) {
		this.extendInfo = extendInfo;
	}

	public int getOrderType() {
		return orderType;
	}

	public void setOrderType(int orderType) {
		this.orderType = orderType;
	}

	@Override
	public String getApiMethodName() {
		return "item.sellerSearchItemList";
	}

	@Override
	public TreeMap<String, String> getTextParams(ParameterUtils paramUtils) throws Exception {
		
		paramUtils.addStringParam("pageIndex", this.pageIndex);
		paramUtils.addStringParam("pageSize", this.pageSize);
		paramUtils.addStringParam("sellerUin", this.sellerUin);
		paramUtils.addStringParam("itemName", this.itemName);
		paramUtils.addStringParam("itemTags", this.itemTags);
		paramUtils.addStringParam("categoryId", this.categoryId);
		paramUtils.addStringParam("itemState", this.itemState);
		paramUtils.addStringParam("createTimeBegin", this.createTimeBegin);
		paramUtils.addStringParam("createTimeEnd", this.createTimeEnd);
		paramUtils.addStringParam("modifyTimeBegin", this.modifyTimeBegin);
		paramUtils.addStringParam("modifyTimeEnd", this.modifyTimeEnd);
		paramUtils.addStringParam("toSaleTimeBegin", this.toSaleTimeBegin);
		paramUtils.addStringParam("toSaleTimeEnd", this.toSaleTimeEnd);
		paramUtils.addStringParam("priceMorethan", this.priceMorethan);
		paramUtils.addStringParam("priceLessthan", this.priceLessthan);
		paramUtils.addStringParam("extendInfo", this.extendInfo);
		paramUtils.addStringParam("orderType", this.orderType);
		
		return paramUtils.getParamsMap();
	}

	@Override
	public Class<SellerSearchItemListResponse> getResponseClass() {
		return SellerSearchItemListResponse.class;
	}

}
